package task

import (
	"SystemExploration/task/itemdb"
	"fmt"
)

type tailTaskMgr struct {
	tailTaskMap map[string]*itemdb.TaskItem //所有任务
	collect     []itemdb.ItemInfo           //所有配置项
	confChan    chan itemdb.ItemInfo        //等待新配置的通道
}

var TTMgr *tailTaskMgr

func Init() {
	//有多个日志收集项
	//针对每一个启动一下tObj

	TTMgr = &tailTaskMgr{
		tailTaskMap: make(map[string]*itemdb.TaskItem),
		collect:     []itemdb.ItemInfo{},
		confChan:    make(chan itemdb.ItemInfo),
	}

	for _, conf := range TTMgr.collect {
		fmt.Println(conf)
		tt := itemdb.NewItemTask(conf)
		tt.Init()
		TTMgr.tailTaskMap[conf.Name] = tt //登记一下
		fmt.Println(TTMgr.tailTaskMap)
		go tt.Run()
	}
	go TTMgr.watch()
}

func (t *tailTaskMgr) watch() {
	for {
		newConf := <-t.confChan

		switch newConf.State {
		case 1:
			if t.isExist(newConf) {
				fmt.Println("已经有了")
				continue
			}
			tt := itemdb.NewItemTask(newConf)    //创建手机任务
			tt.Init()                            //打开文件
			TTMgr.tailTaskMap[newConf.Name] = tt //登记一下
			go tt.Run()
		case 2:
			if !t.isExist(newConf) {
				fmt.Println("已经没有了")
				continue
			}
			t.tailTaskMap[newConf.Name].Stop()
			delete(t.tailTaskMap, newConf.Name)
		}
	}

}
func (t *tailTaskMgr) isExist(conf itemdb.ItemInfo) bool {
	_, ok := t.tailTaskMap[conf.Name]
	return ok
}

//操作任务  增删改查
func AddTask(item itemdb.ItemInfo) {
	TTMgr.confChan <- item
}
